"""
165. 比较版本号
中等
相关标签
premium lock icon
相关企业
提示
给你两个 版本号字符串 version1 和 version2 ，请你比较它们。版本号由被点 '.' 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。

比较版本号时，请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少，则将缺失的修订号视为 0。

返回规则如下：

如果 version1 < version2 返回 -1，
如果 version1 > version2 返回 1，
除此之外返回 0。


示例 1：

输入：version1 = "1.2", version2 = "1.10"

输出：-1

解释：

version1 的第二个修订号为 "2"，version2 的第二个修订号为 "10"：2 < 10，所以 version1 < version2。

示例 2：

输入：version1 = "1.01", version2 = "1.001"

输出：0

解释：

忽略前导零，"01" 和 "001" 都代表相同的整数 "1"。

示例 3：

输入：version1 = "1.0", version2 = "1.0.0.0"

输出：0

解释：

version1 有更少的修订号，每个缺失的修订号按 "0" 处理。



提示：

1 <= version1.length, version2.length <= 500
version1 和 version2 仅包含数字和 '.'
version1 和 version2 都是 有效版本号
version1 和 version2 的所有修订号都可以存储在 32 位整数 中
"""
from itertools import zip_longest


class Solution:
    def compareVersion(self, version1: str, version2: str) -> int:
        split1 = version1.split(".")
        split2 = version2.split(".")
        while len(split2)< len(split1):
            split2.append("0")
        while len(split2)> len(split1):
            split1.append("0")
        for i in range(len(split1)):
            if int(split1[i])> int(split2[i]):
                return 1
            elif int(split1[i])< int(split2[i]):
                return -1
        return 0
    def compareVersion(self, version1: str, version2: str) -> int:
        #打包并且按照最长的那个
        for s1, s2 in zip_longest(version1.split('.'), version2.split('.')):
            ver1 = int(s1) if s1 else 0
            ver2 = int(s2) if s2 else 0
            if ver1 != ver2:
                return -1 if ver1 < ver2 else 1
        return 0

if __name__ == '__main__':
    print(Solution().compareVersion( "1.2","1.10"))
